﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SmartMathLibrary.Space
{
    /// <summary>
    /// This interface has to be implement, when a specified class should 
    /// be used as a space item value.
    /// </summary>
    public interface ISpaceEntry : ICloneable
    {
        /// <summary>
        /// Compares the current <see cref="ISpaceEntry"/> to the specified <see cref="ISpaceEntry"/>. 
        /// </summary>
        /// <param name="entry">The specified entry to compare.</param>
        /// <returns>If the object instances are even, the method returns true otherwise, false.</returns>
        bool Equals(ISpaceEntry entry);

        /// <summary>
        /// Compares the current <see cref="ISpaceEntry"/> to the specified <see cref="ISpaceEntry"/>. 
        /// </summary>
        /// <param name="entry">The specified entry to compare.</param>
        /// <returns>If the specified object instance is lower than the current instance the method returns true otherwise, 
        /// false.</returns>
        bool LowerThan(ISpaceEntry entry);

        /// <summary>
        /// Compares the current <see cref="ISpaceEntry"/> to the specified <see cref="ISpaceEntry"/>. 
        /// </summary>
        /// <param name="entry">The specified entry to compare.</param>
        /// <returns>If the specified object instance is greater than the current instance the method returns true otherwise, 
        /// false.</returns>
        bool GreaterThan(ISpaceEntry entry);
    }
}